const PCFEPATH = '/shb/home';

// 在pc-fe项目中独立部署项目的前缀合集
const prefixPath = [
    '/pcModule',
    '/foundation',
    '/pcResourceManage',
    '/pcoperation',
    '/warehouse',
    '/paas',
    '/pay/sms',
    '/web/relogin',
    '/api',
    '/stats/servicePrice',
    '/stats/sparepart/showStatistics',
    '/trtc',
    '/p/',
    '/fileview',
    '/custom/',
    PCFEPATH
];

/**
 * @description 转换链接，pc-fe项目里面的链接需要加指定前缀,jsp全部重构后，没有后端路由，pc-fe项目里面非独立部署的链接统一都需要加前缀
 * @param {String} url 绝对路径或相对路径
 */
export function conversionLink(url) {
    if (!url) return '';
    
    if (process.env.NODE_ENV == 'development') return url;

    let uri = url;
    let urlHost = '';
    
    // 绝对路径的地址需要如下校验
    // 判断是否是当前域名下的地址，非当前域名下的地址直接返回，当前域名下的地址需要校验是否需要加前缀
    if(url.startsWith('http') || url.startsWith('//')){
        // 获取当前页面的host
        let { host } = window.location;
        let urlArr = url.match(/\/\/(\S*?)\//);
        
        // 获取url的域名,如www.baidu.com
        urlHost = (urlArr && urlArr[1]) || '';
        
        // 传入的url的host不等于当前页面的host（第三方链接，非系统链接），直接返回，不需要校验
        if(urlHost !== host ) return url;

        uri = url.split(urlHost)[1];
        let protocol = window.location.protocol;
        urlHost = `${protocol}//${urlHost}`;
    }

    // 校验相对路径的是否是以prefixPath数组里面的值开头的，不是就加默认前缀并返回（为了兼容jsp二期路由改造的问题）

    let isFind = prefixPath.some(item => {
        return uri.startsWith(item);
    });
     
    // 当传入的链接是绝对路径，转换后返回绝对路径，反之返回相对路径
    return isFind ? `${urlHost}${uri}` : `${urlHost}${PCFEPATH}${uri}`
}

export const RESOURCE_PREFIX = PCFEPATH;